#include "mymodel.h"
#include <QColor>
#include <QFont>
#include <QSize>
#include <QSqlQuery>
#include <QSqlQueryModel>
#include "my_defs.h"
#include "logger.h"
#include "appmanager.h"


MyTabModel::MyTabModel(QObject *parent) :
    QSqlQueryModel(parent)
{
}

Qt::ItemFlags MyTabModel::flags(const QModelIndex &index) const
{
    Qt::ItemFlags flags = QSqlQueryModel::flags(index);
    if (index.column() >= 0 && index.column() < COL_COUNT)
    {
        flags |= Qt::ItemIsDragEnabled;
    }
    return flags;
}

void MyTabModel::refresh()
{
    LOG( "MyTabModel::refresh", query().lastQuery(), "" );
//    emit needReloadData();
}

QVariant MyTabModel::data(const QModelIndex &index, int role) const
{
    QVariant value = QSqlQueryModel::data(index, role);

    switch (role) {

    case Qt::DisplayRole: // Данные для отображения
    case Qt::EditRole:    // Данные для редактирования
        return value;
//    case Qt::TextColorRole: // Цвет текста
//        if(index.column() == 1)
//            return qVariantFromValue(QColor(Qt::blue));
//        else
//            return value;

    case Qt::TextAlignmentRole: // Выравнивание
        if(index.column() == 0 || index.column() == 2)
            return int(Qt::AlignHCenter | Qt::AlignVCenter);
        else
            return int(Qt::AlignLeft | Qt::AlignVCenter | Qt::TextWordWrap);

//    case Qt::FontRole: // Шрифт
//        if(index.column() == 1) {
//            QFont font = QFont("Helvetica", 10, QFont::Bold);
//            return qVariantFromValue(font);
//        }else
//            return value;

    case Qt::BackgroundColorRole: {  // Цвет фона
        int a = (index.row() % 2) ? 14 : 0;
        if(index.column() == 0)
            return qVariantFromValue(QColor(220,240-a,230-a));
        else if(index.column() == 1)
            return qVariantFromValue(QColor(200,220-a,255-a));
        else
            return value;
    };


//    case Qt::SizeHintRole:  // Размер ячейки
//        if (index.column() == 0)
//            return QSize(50, 10);
//        if (index.column() == 2)
//            return QSize(70, 10);
//        else
//            return QSize(130, 10);
    }
    return value;
}

void MyTabModel::setupHeader()
{
    for (int i = 0; i < COL_COUNT; i++)
    {
        setHeaderData(i, Qt::Horizontal, COL_NAMES.at(i), Qt::DisplayRole);
    }
}
